package com.smart.handler;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import com.smart.common.utils.R;

/**
 * 全局异常处理拦截器
 *
 */
@ControllerAdvice
public class GlobalExceptionHandler {

    private Logger logger = LoggerFactory.getLogger(getClass());

    private static final String ERR_MSG = "服务器正忙，请稍后再试!";
    private static final String NULL_MSG = "发生空指针异常！原因是:";
    private static final String UNKNOWN_MSG = "未知异常！原因是:";

    /**
     * 记录,处理空指针的异常,并返回 统一错误信息
     * @param req   请求
     * @param e     异常信息
     * @return com.tyhy.common.utils.R  封装 错误信息
     * @since 2019/11/7
     * 版本历史:
     * Date         Author         Description
     *---------------------------------------------------------*
     * 2019/11/7    chenxu          初始创建
     */
    @ExceptionHandler(value =NullPointerException.class)
    @ResponseBody
    public R exceptionHandler(HttpServletRequest req, NullPointerException e){
        logger.error(NULL_MSG,e);
        return R.error(ERR_MSG);
    }


   /**
    * 记录,处理非特殊处理异常,并返回 统一错误信息
    * @param req   请求
    * @param e     异常信息
    * @return com.tyhy.common.utils.R  封装 错误信息
    * @since 2019/11/7
    * 版本历史:
    * Date         Author         Description
    *---------------------------------------------------------*
    * 2019/11/7    chenxu          初始创建
    */
    @ExceptionHandler(value =Exception.class)
    @ResponseBody
    public R exceptionHandler(HttpServletRequest req, Exception e){
        logger.error(UNKNOWN_MSG,e);
        return R.error(ERR_MSG);
    }

}
